স্প্রিং বুট (Spring Boot) এবং জাভা পেরসিস্টেন্স এপিআই (Java Persistence API বা JPA) এর মাধ্যমে ডেটাবেসের সাথে যোগাযোগ এবং ডেটার কার্যকরী হ্যান্ডলিং করা হয়। JPA Auditing হলো একটি মেকানিজম যা আমাদের ডেটাবেসের অটোমেটিক ট্র্যাকিং এবং টাইমস্ট্যাম্পিংয়ের সুবিধা দেয়। এটি বিশেষ করে তথ্যের সৃষ্টির সময়, পরিবর্তনের সময় এবং মুছে ফেলার সময় ট্র্যাক করতে ব্যবহৃত হয়।
JPA Auditing কি?
JPA Auditing একটি ফিচার যা আপনাকে আপনার ডোমেইন মডেলগুলিতে স্বয়ংক্রিয়ভাবে তথ্য সংরক্ষণ করতে সহায়তা করে। সাধারণত, যখন ডেটাবেসে কোনো রেকর্ড তৈরি, আপডেট বা মুছে ফেলা হয়, তখন ওই অপারেশনের সাথে যুক্ত সময় এবং ব্যবহারকারী সম্পর্কিত তথ্য সংরক্ষণ করা হয়। এটি আপনাকে ডেটা পরিবর্তনের ইতিহাস ট্র্যাক করতে সহায়ক।
JPA Auditing সাধারণত নীচের তথ্যগুলো ট্র্যাক করে:
- ক্রিয়েটেড_এট (createdAt): রেকর্ডটি কখন তৈরি হয়েছে।
- ক্রিয়েটেড_বাই (createdBy): রেকর্ডটি কে তৈরি করেছেন।
- আপডেটেড_এট (updatedAt): রেকর্ডটি কখন আপডেট হয়েছে।
- আপডেটেড_বাই (updatedBy): রেকর্ডটি কে আপডেট করেছেন।
JPA Auditing কনফিগারেশন
JPA Auditing ব্যবহারের জন্য, আমাদের কিছু কনফিগারেশন এবং এন্টিটি ক্লাসে কিছু পরিবর্তন করতে হয়।
স্প্রিং বুট কনফিগারেশন:
প্রথমে,@EnableJpaAuditingঅ্যানোটেশন ব্যবহার করে স্প্রিং বুট অ্যাপ্লিকেশনটি জেপিএ অডিটিং সক্ষম করতে হবে।@Configuration @EnableJpaAuditing public class JpaConfig { }এন্টিটি ক্লাসে অডিটেবল ফিল্ড যোগ করা:
এরপর, আপনার ডোমেইন মডেলে@CreatedDate,@LastModifiedDate,@CreatedBy, এবং@LastModifiedByঅ্যানোটেশন ব্যবহার করতে হবে।উদাহরণস্বরূপ, একটি
Userএন্টিটি ক্লাস:@Entity @EntityListeners(AuditingEntityListener.class) public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; @CreatedDate private LocalDateTime createdAt; @LastModifiedDate private LocalDateTime updatedAt; @CreatedBy private String createdBy; @LastModifiedBy private String updatedBy; // Getters and Setters }অডিটিং কনফিগারেশন:
@CreatedByএবং@LastModifiedByফিল্ডগুলির জন্য একটিAuditorAwareইমপ্লিমেন্টেশন দরকার, যা জানাবে কে রেকর্ডটি তৈরি বা আপডেট করেছেন।@Component public class AuditorAwareImpl implements AuditorAware<String> { @Override public Optional<String> getCurrentAuditor() { return Optional.of("Admin"); // এখানে আপনি আপনার ব্যবহারকারীর নাম বা আইডি দিতে পারেন। } }
উদাহরণ সহ ব্যবহার
এখন, আমরা দেখতে পারি কিভাবে এই কনফিগারেশন ও অডিটিং কাজ করে।
রেকর্ড তৈরি করা:
যখন আপনিUserএন্টিটির একটি রেকর্ড তৈরি করবেন, তখনcreatedAt,createdByফিল্ডগুলি স্বয়ংক্রিয়ভাবে পূর্ণ হবে।@Autowired private UserRepository userRepository; public void createUser() { User user = new User(); user.setUsername("JohnDoe"); userRepository.save(user); }রেকর্ড আপডেট করা:
যখন আপনি একটি রেকর্ড আপডেট করবেন, তখনupdatedAtএবংupdatedByফিল্ডগুলি আপডেট হবে।public void updateUser(Long userId) { User user = userRepository.findById(userId).orElseThrow(); user.setUsername("UpdatedName"); userRepository.save(user); }
JPA Auditing স্প্রিং বুট অ্যাপ্লিকেশনের মধ্যে খুবই শক্তিশালী এবং সহজে কনফিগার করা যায়, যা আপনার ডেটাবেস অপারেশনগুলোকে আরও ট্র্যাকযোগ্য ও ব্যবস্থাপনাযোগ্য করে তোলে।
Read more